package com.ruoyi.system.service;

import java.util.List;
import com.ruoyi.system.domain.BizPurchaseReturn;

public interface IBizPurchaseReturnService {
    BizPurchaseReturn selectBizPurchaseReturnByReturnId(Long returnId);
    List<BizPurchaseReturn> selectBizPurchaseReturnList(BizPurchaseReturn bizPurchaseReturn);
    int insertBizPurchaseReturn(BizPurchaseReturn bizPurchaseReturn);
    int updateBizPurchaseReturn(BizPurchaseReturn bizPurchaseReturn);
    int deleteBizPurchaseReturnByReturnIds(Long[] returnIds);
    int deleteBizPurchaseReturnByReturnId(Long returnId);
    String getNextReturnNoForToday();

    /**
     * 基于检验计划生成退料单（常用于检验完成并拒收的流程）
     *
     * @param planNo 检验计划编号
     * @param quantityOverride 可选，指定退料数量；为空则使用检验计划的 rejectedQuantity
     * @param reasonOverride 可选，指定退料原因；为空则使用检验计划的 rejectionReason
     * @param barcodeId 可选，来源箱码ID
     * @return 已生成并入库的退料单
     */
    BizPurchaseReturn generateFromInspectionPlan(String planNo, java.math.BigDecimal quantityOverride, String reasonOverride, Long barcodeId);
}